POJ_2386

题解

dfs求水坑。水题。别忘了scanf(“%c”)吃回车。

AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <complex>
#include <cstdio>
using namespace std;
#define ll long long
char mp[105][105];
int n,m,ans=0;
void dfs(int x,int y){
mp[x][y]='.';
for(int i=-1 ;i<=1 ;i++){
for(int j=-1 ;j<=1 ;j++){
int xx=i+x,yy=j+y;
if( mp[xx][yy]=='W' && xx>=1 && xx<=n && yy>=1 && yy<=m)
dfs(xx,yy);
}
}
}
int main(){
cin>>n>>m;
for(int i=1 ; i<=n ;i++){
getchar();
for(int j=1 ; j<=m ;j++)
scanf("%c",&mp[i][j]);
}
for(int i=1 ; i<=n ; i++)
for(int j=1 ;j<=m ; j++)
if(mp[i][j]=='W'){
dfs(i,j);
ans++;
}
printf("%d\n",ans);
return 0;
}